テストエンジニアはきつい?元テストエンジニアの目線で実情を徹底解説
なぜ、テストエンジニアは「きつい」と言われているか気になる方は多いでしょう。
年収が上がらない・テスト自動化ツールによって仕事を失うか不安だなど、さまざまな理由があります。
しかし、テストエンジニア全体がきつくやめたほうがいい職業ではありません。
きつい理由を明確に知ることができると、これからテストエンジニアを目指すべきか判断しやすくなるでしょう。
本記事では、テストエンジニアが「きつい」と言われる理由について解説します。
テストエンジニアのやりがいや向いている人の特徴なども紹介するので、これからテストエンジニアを目指そうか悩んでいる方は、ぜひ参考にしてみてください。
目次 (PRも含まれます)
テストエンジニアとは
テストエンジニアは、Webアプリケーションなどを作った際に、成果物をお客さんに出して本当に問題ないかをチェックする仕事になります。
テストエンジニアは別名「QAエンジニア」と呼ばれていますが、これはQuality Assurance、つまり品質保証エンジニアの略称です。
つまり、製品の品質を保証することが主な役割となります。
テストエンジニアの仕事内容
「品質を保証する」と言っても、実はテストエンジニアにはいろいろとやることがあります。
テストエンジニアの仕事内容について、それぞれ解説していきましょう。
テストケースの作成
サービスの品質を保証する際は、最初にテストケースを作成します。
テストケースとは、サービスで確認すべき内容や、テストの条件、テスト実行の手順、ユーザーがサービスを利用した際に期待する結果などをまとめたものを指します。
説明してもわかりづらいかもしれませんので、実際にある会員制アプリのログイン機能のテストケースを見てみましょう。
【テスト】
- 正しいIDとパスワードを入力した時に、ログインできること
【手順】
- https://example.com/loginにアクセスする
- ログインフィールドに以下の値を入れる: example@example.com
- パスワードに以下の値を入れる: password
- ログインボタンをクリックする
【期待値】
- ログインに完了しましたというフラッシュアラートが表示されること
【結果】 ・・・
このように、テストケースには「期待値」、「手順」、「結果」が基本的に明記されています。
これらの詳細が集約されたドキュメントがテストケースです。
サービスがどのように動くかをまとめたテストケースを作るのは、テストエンジニアのタスクの1つです。
ちなみに、例に出したテストケースは「正常系」と呼ばれるもので、本来期待される正しい入力に対するテストとなります。
また、テストケースには他にもいくつかのバリエーションがあり、以下のようなものが考えられます。
【テスト】
- ログインIDとパスワードを入れないでログインしようとすると失敗すること
【手順】
- https://example.com/loginにアクセスする
- 何も入力せずにログインボタンをクリックする
【期待値】
- 「IDとパスワードを入力してください」と表示されること
このような不適切な値を入れるテストは「異常系」と称され、先ほどに述べた正常系と共に重要なテストケースの一部となります。
例えば、ログインIDやパスワードを一切入力せずにログインボタンをクリックした結果、何も表示されなくなるという事態も起こり得ます。
このケースでは、ユーザーが「バグっている」と誤解することで、問い合わせが増加したり、サービスが機能していないと誤認識したりすることで、サービスの利用が停止する可能性があります。
そのような状況を回避するためには、ユーザーの多様な利用シーンを予測し、本来提供すべき機能が適切に実装されているかを考察しながらテストケースを作成する作業が不可欠です。
テストケースの実行
テストケースの実行もテストエンジニアの仕事の一部です。
これは皆さんが思い描く最も理解しやすいテストエンジニアのイメージに近いかもしれません。
例えば、下記のようなテストケースがあった場合、その結果がどのようになったかを記録する作業となります。
【テスト】
- 正しいIDとパスワードを入力した時に、ログインできること
【手順】
- https://example.com/loginにアクセスする
- ログインフィールドに以下の値を入れる: example@example.com
- パスワードに以下の値を入れる: password
- ログインボタンをクリックする
【期待値】
- ログインに完了しましたというフラッシュアラートが表示されること
【結果】
- OK
【テスト】
- ログインIDとパスワードを入れないでログインしようとすると失敗すること
【手順】
- https://example.com/loginにアクセスする
- 何も入力せずにログインボタンをクリックする
【期待値】
- 「IDとパスワードを入力してください」と表示されること
【結果】
- NG(何も表示されなくなった)
この様なテストケースはエクセルなどにまとめられており、それぞれの結果がOKだったのか否かを記録していきます。
テストケースの期待値に合致しない場合はバグと判断され、それが発見された場合は開発チームに通知し、修正を行う必要があります。
テストケースの運用・改善
テストエンジニアの業務には、テストケースの運用と改善も含まれます。
テストケースの作成については初めに解説した通りですが、テストケースを1回作ったらそれでおしまい、というわけではありません。
ログイン機能に対し、「既に登録されたログインアドレスは再度登録不可にしてほしい」という要望があったとき、その要望をプロダクトに反映しなければなりません。
その場合は、既に存在するテストケースに加えて、新たなテストケースを付け加える必要があります。
さらに、テストケースが既に作成されている機能が変更された場合、テストケースを改訂する必要があります。
テストケースは一度作成しただけで終わりではなく、何度も更新を行うことが重要です。
テスト計画の作成
テストエンジニアがマネージャーポジションになると、テスト計画の作成という業務が加わります。
テスト計画とは、どれくらいの時間を使い、どのようなテストをどれくらいの割合でいつまでに終えるのかという計画を作成したものです。
探索テストの実行
テストエンジニアの業務には、探索テストを行うという部分が含まれています。
探索テストとは、さまざまな顧客の使用ケースを予想しつつ、エラーが発生しそうな箇所をランダムにピックアップする作業を指します。
例えば、ログイン機能に対して探索テストを実行する場合、既存のテストケースは一時的に忘れて、更新ボタンを一気に100回押し続けたらどうなるかという事例を想定します。
その時に、テストで以下のような事象が発生する可能性が存在します。
- 画面が固まってしまう
- 同じアカウントが100個生成される
- 2回連続で一気に作ろうとするとアカウントが2つ生成される
全ての可能性を考慮することにより、このようなバグを事前に防ぐことが可能です。
加えて、セキュリティの弱点を狙ったテストも、探索テストの実行時に行います。
たとえば、IDとパスワードを打ち込む時に、既にそのメールアドレスが存在していると「メールアドレスが存在します」と表示されます。
また、メールアドレスが存在しない場合、「IDとパスワードを入力してください」と表示されるような仕様になっていたと仮定しましょう。
しかし、前者のケースでは、メールアドレスが存在するという事実により、パスワードを一つ一つ試すことでログインを突破する可能性があります。(これは総当たり攻撃というハッキングの技術です。)
このように、セキュリティ面での問題がないかを、ハッキングを通じて検証するのもテストエンジニアの仕事内容の一つです。
テスト自動化
テストエンジニアの業務には、テストの自動化も含まれています。
テスト自動化というのは、先述したテストドキュメントをソフトウェアを用いて自動的に行えるようにすることです。
新しい機能をエンジニアが追加したとき、テストエンジニアがその新たな機能を手作業で検証していくと、非常に時間がかかります。
したがって、頻繁に行われるテストは、場合によってはソフトウェアによる自動化が必要となります。
たとえば、先述のログインテストを自動化するシチュエーションを考えてみてください。
プログラミング言語(Ruby、Python、Java等)を用いて、Seleniumのようなブラウザの自動操作が可能なライブラリを活用し、ログインフィールドへの値の挿入やパスワードの入力、更新などのアクションを自動化することができます。
その結果、自動化されたプログラムにより、テストが稼働しているかどうかを確認できます。
テストを自動化する重要性
実際、テストの自動化はテストエンジニアだけでなく、Webエンジニアも行うことがあります。
テストには、
- 単体テスト
- 結合テスト
- 受け入れテスト
の3つがあります。
単体テストと結合テストは、基本的にはユーザーの画面を利用しないでプログラムの各要素を試験するもので、一般的にWebエンジニアがそれを実施します。
また、受け入れテストはUI側のテストで、普通テストエンジニアがその役割を果たすことが一般的です。
例えば、IDへの値の設定やパスワードの入力といった手続きは、Webエンジニアだけのテストでは不十分な場合があり、その部分をテストエンジニアが作成することがあります。
そのため、何度もテストを手動で行うのは困難な作業となりますので、自動化してスムーズに進行させます。
近頃は「Autify(オーティファイ)」や「mabl(メイブル)」といった、プログラムを書かずにブラウザでテストを作れるツールも利用されています。
自動化を活用することでテストの実施が容易になり、それに伴いツールの使い方についてのスキルが試されることもあるでしょう。
テスト結果の報告 / 開発部門への品質改善提案
いくつかのテストが完了したら、その結果の報告をします。
通常、テストの結果に基づき、「バグ」あるいは「要望」として報告を提出します。
バグが検出されたり、あるいは現状がこれに含まれます。
- 想定した仕様通りではない場合:バグ
- 仕様がユーザーにとって不便ではないかという疑問が生じた場合:要望
たとえばバグがある場合、「○○の手順に従ったが、期待した結果ではなく××になった」という方法で報告します。
通常、報告はチケット管理という仕組みを利用して実施し、他のエンジニアと情報を共有します。
このテスト結果の伝達はとても重要で、エンジニアが素早く対応できるように、また問題がどのように再現するかを詳細に書くことが要求されます。
優秀なテストエンジニアは、この報告をうまく行うことができます。
またバグだけではなく、異常系のテストを行った際にユーザーへのレスポンスが不十分だった場合など、ユーザーが簡単に理解できるように明記して報告することも大事です。
テスト結果を共有する際、「GitHub」や「Jira」、「Redmine」といったツールがよく活用されます。
テストエンジニアがきつい・やめておけといわれる理由
テストエンジニアがきつい、またはやめておけといわれる理由には、以下のような要素が考えられます。
- キャリアアップしづらいから
- 年収が上がりづらいから
- 単純作業が多いから
- エンジニアとのコミュニケーションがしんどいから
- テスト自動化によって手動テストのケースが減っているから
- テストアプリの発達でテスト自動化エンジニアの需要が減っているから
- 裁量権がほとんどないから
それぞれの要因について、詳しく解説します。
キャリアアップしづらいから
テストエンジニアがきついとされ、やめておけと言われる理由の一つに、キャリアアップが難しいという課題が挙げられます。
会社によるものの、で自社のソフトウェアがない企業でテストエンジニアとして働く場合、昇進やキャリアアップが難しい傾向にあります。
特に、SESでテストエンジニアとして働いている場合は、この流れがよりはっきりと現れるかもしれません。
なぜかと言うと、SESなどの現場でテストエンジニアとして働くと、プロジェクト単位での採用という状態になることが多いからです。
特定のソフトウェアのテストケースを実行するのみで、テストが終了すると同時に業務も終わってしまうことが頻繁に起こります。
その結果、テストケースの作成や、より質の高いテストやテスト自動化のプロジェクトを始める前に、テスト作業が終了してしまうのです。
単純にテストを実施するだけの仕事になりがちで、それにより単価を上げられるほどの経験を積めず、エンジニアとしての希少価値を高められないため、キャリアアップが難しくなります。
年収が上がりづらいから
キャリアアップの難しさから年収アップしにくいという点も、テストエンジニアの職がきつい、またはやめておけと言われる要因です。
テストエンジニアとして働く中で感じたことは、給与の差が大きい職種であるという点です。
通常、テストエンジニアの年収は約300万〜500万と考えられています。
例えば、テスト計画の策定やテスト自動化等、自社開発の企業でテスト体制を築いてきた経験があれば、フリーランスとして時間単価が6000円や8000円(年収700~800万円)になるケースも考えられます。
一方、単にテストケースに従ってテストを行うだけでは、スキルが向上しないため、年収も上がりにくいです。
テストエンジニア全般が年収が上がりにくいとは言えず、所属している会社によって大きく変わります。
テストエンジニアとしてのスキルを磨けるような会社や、テストエンジニアとしてキャリアを発展させることができる会社に加わると、年収が増える可能性もあると言えます。
テストマネージャーやテストリーダーといった立場、またはテストの自動化を推進し、ソフトウェアをより良くするための現場で学んだスキルは非常に有益です。
特に高度なレベルのテストエンジニアは、ウェブエンジニアに比べて不足している傾向があり、高額な年収が見込まれます。
メルカリやUbieといった大型ベンチャーでは、テストエンジニアという職種のジョブディスクリプションが設けられており、年収が多い傾向にあります。
単純作業が多いから
テストケースに準じてテストを実施するという、単調な作業が多いことも理由の一つといえます。
「テストを行いました、完了」とエクセルの項目に日々報告を続けるような業務を5年や10年続けているのに、単価が全く上がらないというケースが非常に多いです。
行なっている業務としては、ただ確認をしているだけなので、極めて単純な作業になることも。
結論として、単純な仕事が多くなると同時に収入の増加が難しくなる、またキャリアの向上が困難になるという一つの問題があると思われます。
ただ、全てのテストエンジニアが単調な作業を多く行うわけではないです。
確かに、単純作業が要求される職場へ行くと、ずっと単純作業を続けなければならない可能性があります。
企業によっては、テストエンジニアは単純作業とみなされ、他の業務を担当させられる場合もあります。
エンジニアとコミュニケーションがしんどいから
さらに一つの理由として、エンジニアとのコミュニケーションが難しいという課題があります。しかし、これも本当に職場によります。
以前のエンジニアと比較して、現代の日本のエンジニアの能力は大幅に向上しており、コミュニケーションが困難になる状況は少ないです。
しかし昔ながらの会社にいると、エンジニアの中にはコミュニケーションが苦手な人もしばしばいます。
揚げ足を取るような行動をしたり、自分の業界用語を用いないと適切に伝わらなかったり、自分の信じるエンジニアの正義だけを強調する厄介なエンジニアも少なくありません。
そういう人との交流は、メンタルにストレスを感じることもあるでしょう。
エンジニアとの交流は、あらゆる職場で必要不可欠です。
エンジニアとの難解なコミュニケーションを避けるには、高品質なソフトウェアを提供する会社や、業績が良い会社を選択すると良いでしょう。
その種の会社ではエンジニアの質も高く、精神的なストレスを引き起こす問題が少ない傾向にあります。
テスト自動化によって手動テストのケースが減っているから
テスト自動化によって手動テストが必要なくなると、テストエンジニアの将来性が無いと考える人もいます。
基本的にテストエンジニアは手動でテストを行うことが多いですが、日常的に繰り返し行われるテストは、しばしばプログラムを用いて自動化されます。
自動化テストが増加すると、テスターによる単一のテスト作業がなくなり、テストエンジニアの必要性についての疑問を投げかける意見が生まれてきます。
「一部が正確」というのは、テスト資料が整理され、日々行う容易なテスト、すなわち「実施すればOK」のようなテストだけを扱っている人の職がなくなる可能性があるということです。
テストの自動化がソフトウェアによって急速に進むと、単純な作業の仕事はなくなり、将来性が見えなくなります。
しかし、テストエンジニアが行っているのは、一貫したテストだけではありません。
基本として、新しきバグの検出率を上げる探索テストに時間を割いたり、使いにくい部分へのフィードバックでサービスの改善を目指したり、品質を維持する中心的な仕事を進行させることが必要です。
したがって、テストの自動化がテストエンジニアの作業量を減らすわけではないということです。
最終的に、優秀なテストを生成できないなら、テストの自動化は何の意味も持たないです。
つまり、テストに精通している人が、テスト自動化のプログラミングを行っていくだろうということです。
テストエンジニアは、RubyやPHP、Python等のサーバーサイド言語を使用し、Seleniumというライブラリを活用してE2E(受け入れテスト)を作成します。テストエンジニアは自分でプログラムを使ってテストを行うことが基本です。
それゆえに、テスト自動化を導入することで、一部の人々は仕事を失うリスクがありますが、逆に一部のテストエンジニアは年収の上昇が期待されます。
QAのキャリア進行として、自動テストを生成できるテストエンジニアという役職があります。
テストエンジニアとしてテストプログラムを作成できる能力があれば、市場での評価が高まり、フリーランスとしても年収700万円から1000万円程度を見込むことができるでしょう。
テストアプリの発達でテスト自動化エンジニアの需要が減っているから
テスト自動化のためのプログラミングがテストアプリを発展させ、この結果、テスト自動化エンジニアの必要性が低下しているという主張があります。
これまでテストの自動化は、RubyやPython、Javaなどのプログラミング言語を用いて、Seleniumを活用したテストが主流でした。
この風潮は2010年代前半まで続いたのですが、近頃ではMablという、コードを作成しなくてもブラウザでテストを自動化できるサービスが出現しています。
そのため、LayerXやnoteなどの有名なソフトウェア開発会社でも、自動テストをプログラミングのコードで書く代わりに、ブラウザ上で操作してWebアプリからテストコードを増やしている状況にです。
それ故に、テスト自動化エンジニアの未来が暗いという説も出始めています。
個人的な意見では、自動化が進んでもテスターの必要性が無くなるとは思わないです。テスターやテストエンジニアが実際に行うべき仕事とは、顧客に提供する前にいくつもの新しいバグを取り除き、使いづらさを改善して不満を軽減することです。
自動テストを記述することは新規のバグを取り除くのではなく、すでにあるバグが再発しないように同じテストを早くするだけなので、実はあまり優先度が高くないです。
探索的テスト等を活用して、バグの発見数を増やしたり、新たなテストケースを作成したり、UXの改良提案を提出することは、テストエンジニアの価値を大きく発揮すると考えられます。
さらに、MablのようなWebアプリを活用してテスト自動化を実施する場合でも、テスト設計の知識が欠けていると高品質なテスト自動化が実現できません。
結果的には、テストエンジニアの職はなくならないと思います。
裁量権がほとんどないから
テストエンジニアがやめとけ・つらいと言われる理由の1つが、裁量権がほとんどないという点です。
これは一人のテストエンジニアとして、エンジニアへの交渉等を通じてシステムのリリースを遅延させたり、自己のテスト範囲を超えた活動をもっと行いたいと望んでも、それが難しいという点を指しています。
その結果、やめておいた方がいいと言う人も存在するのです。
しかし、作業方法や職場の風通し、個々の評価によって、これは変化します。
通常、テストエンジニアとしてSESに派遣されている方や、派遣で働いているテストエンジニアの方々は、裁量権がほとんど無いという状況が多いと言えます。
このようなエンジニアの業務範囲は、主に発注者によって決定されており、指示に沿って作業を進めることが大部分を占めます。
それ以上の事柄は発注者の従業員が実施するため、裁定の自由がほぼ失われます。
しかし、裁量権がないのはテストエンジニアだからではなく、働いている環境が裁量権を得るのを難しくしているだけです。
また、テストエンジニアとしての経験が増えたり、昇進したりすると、テストエンジニア内でのリーダーや部署間の連携を担うマネージャーになることもあります。リーダーやマネージャーレベルに上がれば、自由裁量も拡大します。
したがって、テストエンジニアが裁量権をほとんど持っていないというのは、その人の立場によるもので、テストエンジニアの裁量権が少ないという認識は誤りと言えます。
テストエンジニアに向いている人
ここでは、テストエンジニアに向いている人について説明します。
具体的には、以下のようなポイントに当てはまるか人は、テストエンジニア向いていると考えられます。
- バグ探しが好きな人
- 細かいチェックが得意な人
- ドキュメンテーションの能力がある人
- 同じことの繰り返しをできる人
- ITの知識がある人
- コミュニケーション能力がある人
それぞれの要点を、詳細に解説します。
バグ探しが好きな人
テストエンジニアに向いている人として、バグを見つけるのが上手な人は特に適しています。
例として、ゲーム等で不具合を検出したり、裏技を探したりする人などが挙げられます。
バグを見つけることは、探索テストを進行する際の重要なスキルです。
「恐らくここには脆弱性が潜んでいる」「このUIの反応を見ていると、このようにクリックすればバグが起こりそうだ」という感覚を自然と持つ人が一部には存在します。
細かいチェックが得意な人
テストエンジニアに向いている人の特徴の一つは、細かな検証に長けていることです。
テストドキュメントを見て、テストケースを一つずつチェックし、仕様書やテストに明記されている期待値や手順、結果を検証する必要があるシーンで役立つでしょう。
特にUIのチェック時に、詳細までしっかりと検証できるかどうかが非常に重要な要素です。
ドキュメンテーションの能力がある人
次に、ドキュメンテーション能力です。
文章を作り出す才能と、理解しやすい文章を作り出す才能を持つ人は、テストエンジニアに向いていると言えます。
たとえば、何らかのエラーが生じた場合、提出したドキュメンテーションだけでエンジニアがその不具合を再現できるか否かが大変重要です。
さらに、相手に理解不能な文章を作成すると、相手はその内容を理解できず、問い合わせをするという余分な手間が発生します。
テストエンジニアとしての目的はバグを報告することなので、それが実行できないと業務は難しいです。
マニュアルを作ることや指示書を書くことが得意な人は、テスターのポジションに非常に向いていると感じます。
同じことの繰り返しをできる人
同じタスクを再三にわたり、正確に行える人はテストエンジニアに向いていると考えられます。
テストエンジニアの役割には、製品を公開する前にスモークテストという検証を施すことが必要です。
スモークテストは、プロダクトの各リリースに伴って実行される検査で、テスターが手動で進行します。
スモークテストのような反復的なタスクに対して抵抗感がなく、日々の同じ作業をも精密にこなすことができる人は、テストエンジニアに最適な存在です。
逆に、同じ作業を何度も行うのが得意でない人は、テストエンジニアの職務をこなすのが難しいかもしれません。
ITの知識がある人
テストエンジニアには、ITの専門知識を持つ人や、ソフトウェア業界での勤務経験がある人が向いています。
テストエンジニアの業務はソフトウェアを扱うので、ソフトウェアの基本的な知識が求められます。
たとえば、ログインの手順やファイルの取り扱い、エクセルやGoogleドキュメント、ワードなどのオフィスツールの利用は必須です。
また、テストの内容に応じてプログラミングの知識が要求されることもあります。
たとえば、認証機能などのセキュリティ関連のテストを実施する際には、その機能の操作方法を把握していないと、テストの実施が困難になります。
しかし、プログラミングの知識が過度にあると、ユーザーの視点からのテストが困難になることもあります。
ユーザーの視点を保持するためには、エンジニアの都合を無視してある程度の知識をいったん忘れること必要です。
テストの内容次第で、ケースバイケースで思考し、ITの知識は適量を保有しておくと好ましいでしょう。
コミュニケーション能力がある人
テストエンジニアには高い人間関係のスキルが求められます。
自分が考えていることを他人に分かってもらうこと、また他人が言っていることを自分が理解すること、これら双方向的なコミュニケーション能力が大切です。
テストエンジニアにとって、コミュニケーション能力は極めて重要で、多数の状況で必要とされます。
例えば、バグを特定したとき、エンジニアやカスタマーサポートに連絡するシチュエーションがあります。
バグを伝える際には、バグを再現する方法や、お客様がバグと認識している事象の分析結果を、エンジニアやカスタマーサポートが理解できる形で説明する必要があります。
ちなみに、ここで言及しているコミュニケーションスキルは、対話だけでなく、チャットコミュニケーションも含んでいます。
テストエンジニアのやりがい
ここでは、現場でテストエンジニアとして活動していた経験から、テストエンジニアのやりがいについて触れていきたいと思います。
インシデントを防げた時に、貢献できていることを実感できる
テストエンジニアとしてのやりがいを感じる時は、バグの特定によって重大なトラブルを防げていると実感できる瞬間です。
特に、自分が安全だと思っていた部分で、重大なバグを見つけたとき、やりがいを感じます。
例えば、私自身が以下のような体験をしたことがあります。
ログイン機能を持つシステムを構築したところ、セキュリティ上の深刻な不具合が見つかりました。
すぐに察知してリリース前に修正を施すことが可能でしたが、自分で見つけ出せなかった場合、サイバー攻撃の対象となり、情報の流出などによる損害賠償を求められる可能性もありました。
このにょうに、ビジネスとして大きな損害を未然に防ぐという、大切な役割でもあります。
他の部署の人に感謝された時
自分が見つけ出したバグにより、他の部門の人たちから感謝の言葉をもらうとき、やりがいにつながります。
例えば、バグを特定してエンジニアに知らせた際、「理解しやすい報告のおかげで早急に修正ができました」と言われると、それは非常に感動的な瞬間ですね。
テストエンジニアの奥が地味に深い
テストエンジニアのやりがいの一つとして、知識を深めることができるという点もあります。
ただドキュメントに準じてテストを行うのではなく、製品の品質を保全しながら、少ないテストケースでより多くのバグを特定できるかを考慮することが必要です。
追求していくと、非常に専門的な仕事になるため、しっかりと学習を続ければ新たな知識を得ることが多いでしょう。
テストエンジニアは将来性がない仕事ではない
テストエンジニアは「将来性がない」といわれますが、正しい知識を付けると今から目指しても遅くない職業です。
「キャリアアップしない」「年収が上がらない」という悩みは、転職したりフリーになることで解決するでしょう。
またテストエンジニアはプロジェクトの動作を確認し、小さなバグを発見するプロなため、今のネット時代にはなくてはならない存在です。
将来性がないからと諦めず、役立つ資格を取得しながら、求められるテストエンジニアを目指してみてください。
AIに仕事を奪われる可能性は?
「AIが私たちの仕事を取り上げるのではないか」という不安が最近出てきていますが、全ての業務が消滅するわけではありません。
今後はAIの活用が仕事において増え、AIを使って効率的に業務を進めることができる人材が必要とされます。
テストエンジニアが活躍できる業種や分野
次にテストエンジニアとして働く上で、 年収が高い業界について解説します。
ソフトウェアテストの業界において、 年収が高いというのは大きく分けて4つです。
- 会社の収益基盤がどのくらいあるのか
- 自社でサービスを持っているか
- 自宅でテストをやっているか
- SESなどの携帯でテストエンジニアをやっているか
一般的に自社でサービスをやっている場合の方が テストエンジニアの年収が高くなる傾向があります。
特にメルカリのようなメガベンチャーで求められるようなソフトウェアエンジニアの年収は、非常に高くなります。
また、テストエンジニアとして仮に自宅やSESの会社で働く場合、年収としてはどの工程からテストエンジニアとして アサインされるかにも大きく関わります。
例えば純粋にテストケースをただ実行して 報告するだけのような場合は、 あまり年収が高くなることはいえません。
しかし、ソフトウェアテスティングに対して、非常に技術投資をしているようなソフトウェアテストの専門家が多くいるような会社であれば、当然ソフトウェアテスティングに対して予算を割くような受注が多くなります。
そのため、ソフトウェアテスティングに強い会社に就職すると年収が高くなる傾向があると思います。
未経験からテストエンジニアへ転職する方法
一般的に、テストエンジニアは未経験者でもなれます。
もちろん、学歴や年齢で選ばれないこともありますが、SES等であれば20代~40代でもテストエンジニアへの転職はそれほど難しくないです。 何か特別な準備をする必要はなく、意欲と基本的な社会人スキルがあれば、未経験でもテストエンジニアになれます。 しかし、優秀なテストエンジニアとして、またはテストエンジニアのキャリアを一段階上げて転職するという観点から考えると、状況は少し異なります。
ソフトウェアテスティングに大規模な投資を行っている企業で、テストエンジニアとしてのスキルを身につけられる会社であれば、大学卒業程度の学歴は必要です。
特に日本を代表する大規模スタートアップで働く際には、高学歴が必要な場合ももあるでしょう。
さらに、IT分野での経験や、自分でテストについての本を読んでいるという経験があれば、未経験者でも雇われる可能性が高まるかもしれません。
年齢別の就職の難しさについてですが、20代はテストエンジニアへの転職が他の年代に比べ容易です。
30代の人も頑張れば未経験でも転職できます。
しかし、40代になると、SESのような企業でなければ転職は困難になるかもしれません。
そのような場合、派遣会社を経由してテストエンジニアになるという選択肢があります。
テストエンジニアのキャリアパス
次に、テストエンジニアのキャリアパスについて詳しく説明します。
基本的に、テストエンジニアが歩むキャリアは2つに分類されます。
- テストエンジニアとして昇格していく
- テストエンジニアと別領域の能力を広げていく
ここで、それぞれのキャリアパスについて、具体的に解説をします。
テスター
テストエンジニアは、一般的にテスターという仕事からキャリアが始まります。
テスターは、テスト仕様書やテストケースを用いて設定されたテストを実施し、その結果を報告する役割です。 未経験、新卒、中途からテストエンジニアになる場合、最初の業務としてこれを実施します。
さらに、SES等で成長が特段に要求されていない職業の場合、この仕事を継続するよう求められる場合が多くあります。
したがってこの職種では、テストケース通りにテストを実施しすることやエビデンスを残すこと、報告ができることがまず求められます。
テストエンジニア
テスターが自分でテストを遂行できるようになると、徐々に任される業務が増えてくるでしょう。 テストケースを単に実行するだけでなく、仕事の範囲が広がるとテストエンジニアに近づきます。
具体的に言えば、テストケースの作成やテスト計画の策定が求められます。
テストリーダー・テストマネージャー
テスターとして自立して仕事を進められるレベルに達したら、次にテストリーダーやテストマネージャーの役割を担います。
テストリーダーは、新製品のローンチ時期を決定し、機能のリリース時にはテスト期間とテスト範囲を設定する役割を担当します。
また、テストの設計や戦略の立案、そして必要なテストプランの策定もテストリーダーの業務です。
例えば、リグレッションテストをどの程度行うのか、探索テストをどれぐらいやるのかなど、テストのスケジュールを立てていくのが彼らの役割です。
テストの構築も担当しますが、指定された期限内でテストのプランを作成し、ガントチャート等を用いてスケジュールを引き、管理するのも仕事の一環です。
また、チーム別にどの程度の工数を持っていて、そのコースに合うように開発やテストを進めていくという役割もあります。
さらに、新人エンジニアの教育もテストリーダーやテストマネージャーの業務となります。
自分でテストを実行することもありますが、基本的にはチーム全体でテストを進められるようにすることが主な業務となります。
テスト自動化エンジニア
次に、テスト自動化エンジニアに関して解説します。
これは純粋にテストエンジニアの延長線上というよりは、特にプログラミングスキルを掛け合わせて価値を出していくような職種です。
テスト自動化エンジニアが担当するのは、様々なテストの中でも、特に反復的に行われるテストの自動化です。
これをリグレッションテスト(回帰テスト)と呼び、新機能を導入した後に、エラーが発生しないかをチェックするテストです。
理想としては、新たな機能が追加された直後にテストを開始するのが良いのですが、テストエンジニアも人間であるため、テストの回数や速度には上限があります。
したがって、テストを一定レベルまで自動化することで、テストケースをプログラムにより動かすのがテスト自動化エンジニアの役目です。
前提として、テストエンジニアが立案したテストケースをプログラムに変換するのが主な仕事内容です。
テスト自動化エンジニアは需要が高まっており、フリーランスとして働きやすく、高い報酬が期待できる職業です。
プログラマー
次にテストエンジニアとは全く異なる職業なのですが、プログラマーに転向するケースもあります。実際、プログラマーがテストを行う場面もあります。
テスト範囲は、単体テスト、結合テスト、そしてE2Eテストの3つになります。
この点について、プログラマーは単体テストや結合テスト、すなわちコードレベルのテストを直接行います。
ただし、実際にユーザーが操作した際に予想される動作の検証(E2Eテスト)は、基本的にテストエンジニアが負う役割です。
そのため、テストエンジニアとしての経験を持つ人が、ソフトウェアエンジニアになるケースも見られます。
テストエンジニアからプログラマーに転身することは、通常テストエンジニアのキャリアパスにはないという点に留意してください。
テストエンジニアからプログラマーに転職できるという情報を得て、プログラマーになる目的でテストエンジニアになるという事例がよく聞かれます。
ただ、テストエンジニアがプログラマーになる事例はごく少数です。 プログラマーの職務は、基本的には経験者が直接業務に就くか、未経験者をプログラマーとして養成する場合が多くなっています。 テストエンジニアがプログラマーに進化するケースも見られますが、それは非常に稀な事例です。
だからこそ、初めてプログラマーを目指すなら、未経験からプログラマーへの転職活動を進めることをおすすめします。
まとめ
テストエンジニアは、全体的に「きつい」「やめとけ」と言われるわけではありません。
全ての理由は、働く企業の環境や個人のスキルで解決できます。
また、テストエンジニアはキャリアパスもあるため、長期的に働きスキルを磨くと将来性のある仕事です。
「テストエンジニアはきついの?」と疑問を持っているなら、まず未経験可能な会社への就職もおすすめします。
記事内で紹介した向いている人の特徴を参考に、ぜひ将来性のあるテストエンジニアを目指してみてください。